home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 3 / BBS in a box - Trilogy III.iso / Files / Prog / L-M / Maximizing Quadra FloatingPoint / FloatToLong.a next >
Encoding:
Text File  |  1992-12-03  |  1.3 KB  |  59 lines  |  [TEXT/MPS ]

  1.     SEG        'FloatToLong'
  2.     CASE    ON
  3.     STRING    ASIS
  4.     MACHINE    MC68020
  5.     MC68881
  6.     PROC
  7.  
  8.  
  9. ;************************************************************
  10. ; long RoundXToLong(long double x)
  11.  
  12.     export RoundXToLong
  13.  
  14. RoundXToLong:
  15.     fmove.x    4(sp),fp0        ; get the number
  16.     fmove.l    fpcr,d1            ; save current rounding mode
  17.     fmove.l    #$00,fpcr        ; set rounding toward nearest
  18.     fmove.l    fp0,d0            ; convert to integer
  19.     fmove.l    d1,fpcr            ; restore rounding mode
  20.     rts
  21.     dc.b    'RoundXToLong'
  22.  
  23.  
  24. ;************************************************************
  25. ; long TruncXToLong(long double x)
  26. ;    return( (long)(x) );
  27.  
  28.     export TruncXToLong
  29.     
  30. TruncXToLong:
  31.     fmove.x    4(sp),fp0        ; get the number
  32.     fmove.l    fpcr,d1            ; save current rounding mode
  33.     fmove.l    #$10,fpcr        ; set rounding toward zero (C-like)
  34.     fmove.l    fp0,d0            ; convert to integer
  35.     fmove.l    d1,fpcr            ; restore rounding mode
  36.     rts
  37.     dc.b    'TruncXToLong'
  38.  
  39.  
  40. ;************************************************************
  41. ; long FloorXToLong(long double x)
  42.  
  43.     export FloorXToLong
  44.  
  45. FloorXToLong:
  46.     fmove.x    4(sp),fp0        ; get the number
  47.     fmove.l    fpcr,d1            ; save current rounding mode
  48.     fmove.l    #$20,fpcr        ; set rounding toward minus infinity
  49.     fmove.l    fp0,d0            ; convert to integer
  50.     fmove.l    d1,fpcr            ; restore rounding mode
  51.     rts
  52.     dc.b    'FloorXToLong '
  53.  
  54. ;************************************************************
  55.  
  56.  
  57.     ENDP
  58.     END
  59.